/* * * EffectSelectActivity.java * * Created by Wuwang on 2017/2/25 * Copyright © 2016年 深圳哎吖科技. All rights reserved. */ package com.aiyaapp.aiya; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.nio.ByteBuffer; import java.util.ArrayList; import android.graphics.Bitmap; import android.os.Bundle; import android.os.Environment; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.JsonReader; import android.view.View; import android.view.WindowManager; import android.widget.TextView; import android.widget.Toast; import com.aiyaapp.aiya.camera.LogUtils; import com.aiyaapp.aiya.camera.MenuAdapter; import com.aiyaapp.aiya.camera.MenuBean; import com.aiyaapp.aiya.util.ClickUtils; import com.aiyaapp.camera.sdk.AiyaEffects; import com.aiyaapp.camera.sdk.base.ISdkManager; import com.aiyaapp.camera.sdk.base.Log; /** * Description: */ public class EffectSelectActivity extends AppCompatActivity { private ArrayList<MenuBean> mStickerData; private RecyclerView mMenuView; private MenuAdapter mStickerAdapter; private TextView mBtnStick,mBtnBeauty; private int mBeautyFlag=0; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } protected void initData(){ mMenuView= (RecyclerView)findViewById(R.id.mMenuView); mBtnStick= (TextView)findViewById(R.id.mLeft); mBtnBeauty= (TextView)findViewById(R.id.mRight); mBtnStick.setSelected(true); refreshRightBtn(); mStickerData=new ArrayList<>(); mMenuView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL,false)); mStickerAdapter=new MenuAdapter(this,mStickerData); mStickerAdapter.setOnClickListener(new ClickUtils.OnClickListener() { @Override public void onClick(View v, int type, int pos, int child) { MenuBean m=mStickerData.get(pos); String name=m.name; mStickerAdapter.checkPos=pos; v.setSelected(true); mStickerAdapter.notifyDataSetChanged(); if (name.equals("原始")) { AiyaEffects.getInstance().setEffect(null); }else{ AiyaEffects.getInstance().setEffect("assets/modelsticker/"+m.path); } } }); mMenuView.setAdapter(mStickerAdapter); initEffectMenu("modelsticker/stickers.json"); } //刷新美颜按钮 public void refreshRightBtn(){ if(mBeautyFlag==0){ mBtnBeauty.setText("美颜关"); mBtnBeauty.setSelected(false); }else{ mBtnBeauty.setText("美颜"+mBeautyFlag); mBtnBeauty.setSelected(true); } } //初始化特效按钮菜单 protected void initEffectMenu(String menuPath) { try { Log.e( "解析菜单->" +menuPath); JsonReader r = new JsonReader(new InputStreamReader(getAssets().open(menuPath))); r.beginArray(); while (r.hasNext()) { MenuBean menu = new MenuBean(); r.beginObject(); String name; while (r.hasNext()) { name = r.nextName(); if (name.equals("name")) { menu.name = r.nextString(); } else if (name.equals("path")) { menu.path = r.nextString(); } } mStickerData.add(menu); Log.e( "增加菜单->" + menu.name); r.endObject(); } r.endArray(); mStickerAdapter.notifyDataSetChanged(); } catch (IOException e) { e.printStackTrace(); mStickerAdapter.notifyDataSetChanged(); } } //View的点击事件处理 public void onClick(View view){ switch (view.getId()){ case R.id.mLeft: mMenuView.setVisibility(mMenuView.getVisibility()==View.VISIBLE? View.GONE:View.VISIBLE); view.setSelected(mMenuView.getVisibility()==View.VISIBLE); break; case R.id.mRight: mBeautyFlag=++mBeautyFlag>=7?0:mBeautyFlag; AiyaEffects.getInstance().set(ISdkManager.SET_BEAUTY_LEVEL,mBeautyFlag); refreshRightBtn(); break; } } protected String getSD(){ return Environment.getExternalStorageDirectory().getAbsolutePath(); } public void saveBitmapAsync(final byte[] bytes,final int width,final int height){ new Thread(new Runnable() { @Override public void run() { LogUtils.e("has take pic"); Bitmap bitmap=Bitmap.createBitmap(width,height, Bitmap.Config.ARGB_8888); ByteBuffer b=ByteBuffer.wrap(bytes); bitmap.copyPixelsFromBuffer(b); saveBitmap(bitmap); bitmap.recycle(); } }).start(); } //图片保存 public void saveBitmap(Bitmap b){ String path = getSD()+ "/AiyaCamera/photo/"; File folder=new File(path); if(!folder.exists()&&!folder.mkdirs()){ runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(EffectSelectActivity.this, "无法保存照片", Toast.LENGTH_SHORT).show(); } }); return; } long dataTake = System.currentTimeMillis(); final String jpegName=path+ dataTake +".jpg"; try { FileOutputStream fout = new FileOutputStream(jpegName); BufferedOutputStream bos = new BufferedOutputStream(fout); b.compress(Bitmap.CompressFormat.JPEG, 100, bos); bos.flush(); bos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(EffectSelectActivity.this, "保存成功->"+jpegName, Toast.LENGTH_SHORT).show(); } }); } }